// pages/function/sub/bind-wechat.js
const APP = getApp();

Page({

  /**
   * 页面的初始数据
   */
  data: {
    //固定参数
    //布局参数
    //微信变量
    canIUseGetUserProfile:true,
    dataWxJsCode:'',
    dataWxEncryptedData: '',
    dataWxIv: '',
    dataWxRawData:'',
    dataWxUserInfo:{},//性别：0》未知；1》男；2》女；
    dataWxSignature:'',
    //逻辑变量
    canIUseGetUserProfile:true,
    dataWechatInfo:{
      wxavatar:'/asset/img/empty/icon_empty_square.png',
      wxnickname:'微信昵称'
    },
    dataBtnText:'绑定微信',
    isBtnDisabled:false,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    let _this = this;

    //操作检测
    if(wx.getUserProfile){
      _this.setData({
        canIUseGetUserProfile:true
      });
    };
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function () {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {
    let _this = this;
    
    _this.doWxLogin(null);
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },

  /**
   * 逻辑区域
   */

  //微信登录评证
  doWxLogin:function(callback){
    let _this = this;
    wx.login({
      success(res) {
        if (res.code) {
          //用户登录凭证（有效期五分钟）
          _this.setData({
            dataWxJsCode: res.code
          },function(){
            callback && callback();
          });
        } else {
          APP.applog.error(res.errMsg);
        }
      }
    });
  },
  //获取微信数据(新方式)
  getUserProfile:function(event){
    let _this = this;

    wx.getUserProfile({
      lang:'zh_CN',
      desc: '用于微信快捷登录',
      success:function(res){
        _this.setData({
          dataWxRawData:res.rawData,
          dataWxIv:res.iv,
          dataWxEncryptedData:res.encryptedData,
          dataWxSignature:res.signature,
          dataWxUserInfo:res.userInfo
        },function(){
          _this.doBindWechat(null);
        })
      }
    });
  },
  //获取微信数据(旧方式)
  getUserInfo:function(event){
    wx.getUserInfo({
      lang:'zh_CN',
      withCredentials:true,
      success:function(res){
        _this.setData({
          dataWxRawData:res.rawData,
          dataWxIv:res.iv,
          dataWxEncryptedData:res.encryptedData,
          dataWxSignature:res.signature,
          dataWxUserInfo:res.userInfo
        },function(){
          _this.doBindWechat(null);
        });
      }
    });
  },
  //绑定微信
  doBindWechat:function(completedcallback){
    let _this = this;
    
    _this.doWxLogin(function(){
      APP._post('/miniprogram/NavFunction/bindWechat', {
        js_code:_this.data.dataWxJsCode,
        raw_data: encodeURI(_this.data.dataWxRawData),//有汉字必须转义
        signature:_this.data.dataWxSignature
      }, null, function (res) {
        //执行成功
        if (res.caCode === APP.appconfig.fwcode.successed) {
          _this.setData({
            dataWechatInfo:{
              wxavatar:_this.data.dataWxUserInfo.avatarUrl,
              wxnickname:_this.data.dataWxUserInfo.nickName
            },
            dataBtnText:'更换成功...',
            isBtnDisabled:true
          },function(){
            APP.apptool.showToastInfo(res.caMsg,null,2000,function(res){
              wx.navigateBack({
                delta: 1,
              });
            });
          });
        } else {
          APP.apptool.showToastInfo(res.caMsg);
        }
      }, function (res) {
        //执行失败
      }, function (res) {
        //执行完成
        completedcallback && completedcallback();
      });
    });
  }
})